package com.ruoyi.business.mapper;

import java.util.List;
import com.ruoyi.business.domain.RequipmentMaintRec;
import com.ruoyi.business.vo.EquipmentMaintenanceVO;
import com.ruoyi.business.vo.RequipmentMaintRecListVO;
import com.ruoyi.business.vo.StatisticVo;
import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

/**
 * 设备维护记录Mapper接口
 * 
 * @author qiancheng
 * @date 2025-09-29
 */
@Mapper
public interface RequipmentMaintRecMapper extends BaseMapper<RequipmentMaintRec>
{
    /**
     * 查询设备维护记录
     * 
     * @param id 设备维护记录主键
     * @return 设备维护记录
     */
    public RequipmentMaintRec selectRequipmentMaintRecById(Long id);

    /**
     * 查询设备维护记录列表
     * 
     * @param requipmentMaintRec 设备维护记录
     * @return 设备维护记录集合
     */
    public List<RequipmentMaintRec> selectRequipmentMaintRecList(RequipmentMaintRec requipmentMaintRec);

    /**
     * 新增设备维护记录
     * 
     * @param requipmentMaintRec 设备维护记录
     * @return 结果
     */
    public int insertRequipmentMaintRec(RequipmentMaintRec requipmentMaintRec);

    /**
     * 修改设备维护记录
     * 
     * @param requipmentMaintRec 设备维护记录
     * @return 结果
     */
    public int updateRequipmentMaintRec(RequipmentMaintRec requipmentMaintRec);

    /**
     * 删除设备维护记录
     * 
     * @param id 设备维护记录主键
     * @return 结果
     */
    public int deleteRequipmentMaintRecById(Long id);

    /**
     * 批量删除设备维护记录
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteRequipmentMaintRecByIds(Long[] ids);

    /**
     * 查询维养记录列表
     * @param params
     * @return
     */
    List<RequipmentMaintRecListVO> selectMaintRecList(RequipmentMaintRec params);

    /**
     * 查询设备维护次数信息
     *
     * @param year   年份
     * @param rackId
     * @return 包含各设备维护次数和总次数的列表
     */
    List<EquipmentMaintenanceVO> getEquipmentMaintenanceCount(@Param("year") Integer year, @Param("rackId") String rackId);

    /**
     * 获取完整的月度统计数据（自动补零）
     */
    List<StatisticVo> getFullMonthStatistic();
}
